Conversation
Add a chat font size preference (12–16px, default 14px) that scales both assistant responses and user message bubbles. - Add chatFontSizeAtom persisted to localStorage - Convert sm sizeStyles from rem-based (text-sm) to em-based (text-[1em]) so text inherits from parent fontSize instead of being root-relative - Pass baseFontSize prop through MemoizedMarkdown/ChatMarkdownRenderer with inline style override for prose-sm's rem-based font-size - Apply font size to user message bubbles via style prop - Add Chat Font Size + Terminal Font Size selectors in Appearance settings Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…, and improvements Includes all recent development work: - Chat font size setting (12-16px) in Appearance settings - Sidebar rework with workspace tree and expanded state - Terminal font size and config improvements - Claude integration updates (transform, credential manager) - Agent UI improvements (diff view, tool registry, header controls) - Sub-chat selector and content updates - Layout and mentions system refinements - DB schema migration (0008) - Various bug fixes and polish Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Hey! Here's a walkthrough of what this PR covers — happy to discuss any of it. What changedSidebar Architecture ReworkThe biggest change here. Replaced the separate sub-chats sidebar (
Chat Font Size (new setting)Users can now pick 12–16px for chat text in Settings > Appearance. The tricky part was that Tailwind's Terminal Font Size (new setting)Same idea for the terminal — 10–24px range, default 13px. Added Workspace Accent ColorsNew TypeScript FixesA bunch of strictness cleanups:
Sub-chat Tab PolishTabs are now pill-shaped ( Known considerations
If anything looks off or needs adjusting, feel free to reach out — I'm happy to iterate on this. You can ping me directly on the PR or via GitHub. — Dennis |
Summary
This PR brings together a batch of improvements spanning font size customization, a major sidebar architecture rework, TypeScript strictness fixes, and various UI polish across the desktop app.
What's New
1. Configurable Chat Font Size (12–16px)
Adds a user preference to scale text in both assistant responses and user message bubbles.
How it works:
chatFontSizeAtompersisted to localStorage (default 14px — matches previoustext-sm)smmarkdown size variant fromrem-based (text-sm) toem-based (text-[1em]) —remalways resolves relative to root, ignoring parentfontSize.eminherits from parent, enabling dynamic scaling.baseFontSizeprop threaded throughMemoizedMarkdown→MemoizedMarkdownBlock→ChatMarkdownRendererwith inlinestyle={{ fontSize }}override on theprose-smwrapperfontSizevia style propmemocomparisons updated to includebaseFontSizeFiles:
atoms/index.ts,chat-markdown-renderer.tsx,memoized-text-part.tsx,agent-user-message-bubble.tsx,agents-appearance-tab.tsx2. Configurable Terminal Font Size (10–24px)
Adds a user preference for terminal text size with dynamic line height scaling.
How it works:
terminalFontSizeAtompersisted to localStorage (default 13px)getTerminalLineHeight()scales line-height per font size (1.3 for ≤11px, up to 1.45 for >16px) so small fonts don't feel over-spacedcreateTerminalInstance()options at creation timeuseEffectthat setsxterm.options.fontSize+lineHeightand refits — no terminal recreation neededFiles:
terminal/atoms.ts,terminal/config.ts,terminal/helpers.ts,terminal/terminal.tsx3. Unified Sidebar Architecture
Replaces the separate sub-chats sidebar with a unified workspace tree in the main sidebar.
Key changes:
agents-sidebar.tsx, +1430/-583 lines): Workspace tree with collapsible sections, expanded state tracking viaexpandedWorkspaceIdsAtom, sort popover, and Tabler iconsagents-content.tsx— no moreResizableSidebar+AgentsSubChatsSidebarwrapperagents-header-controls.tsx): Sidebar toggle moved to a floating animated button inagents-layout.tsxusingAnimatePresence+motion.buttonsub-chat-selector.tsx): Rounded-full pill style, refined active/inactive colors, removed the "open sidebar" buttonagents-layout.tsx): Sidebar max width increased to 400px, animation duration set to 0.2s, floating toggle button with macOS traffic light offsetexpandedWorkspaceIdsAtom,agentsSubChatUnseenChangesAtom4. Workspace Accent Colors
accentColorcolumn onchatstable (hex string, nullable)0008_steep_warlock.sqlchats.updateColortRPC mutation5. TypeScript Strictness Fixes
Cleaned up type safety issues across the codebase:
as constassertions on behavior literals in claude router ("deny" as const,"allow" as const)as unknown as UIMessageChunkdouble-cast for custom extension types with explanatory commentsfinalEnvasRecord<string, string>with comment explaining whyuseSearchParams,useRouter,useClerk,useCombinedAuth)DiffSidebarRendererProps(prUrl?: string | null,isFullscreen: boolean | null)sandboxId,repository,isFullscreenprops@ts-nocheckon WIPcredential-manager.ts(dependencies not yet created).ts→ bare extensions in credential-manager importsSourceCredentialManager.authenticate()6. Other Improvements
emitSdkMessageUuidoption from transformer configagent-chat-card,agent-model-selector,agents-quick-switch-dialog,work-mode-selector,text-selection-context,agent-dialog,agents-custom-agents-tab,agents-mentions-editorFiles Changed
52 files, +1,969 insertions, -604 deletions
Test Plan
npx tsc --noEmitpasses cleanly.🤖 Generated with Claude Code